home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib03.dsk / LOAN REDUCTION ANALYSIS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  68 lines

  1. 1000  REM  ---------------------
  2. 1001  REM  PGM GENERATES PAYMENT
  3. 1002  REM   SCHEDULE FOR DIRECT
  4. 1003  REM   REDUCTION LOAN WITH
  5. 1004  REM  PRIN VAL VS. INTEREST
  6. 1005 :
  7. 1006  REM     BY LARRY ABRAMS
  8. 1007  REM     ARIES  SOFTWARE
  9. 1008 :
  10. 1009  REM   APPLESOFT / 7.20.80
  11. 1010  REM  ---------------------
  12. 1011 :
  13. 2000  REM  PGM INITIALIZATION
  14. 2001  ONERR  GOTO 8001
  15. 2002 FLAG = 0
  16. 2003 :
  17. 3000  REM  MENU / INPUT SECTION
  18. 3001  HOME : VTAB 5
  19. 3002  PRINT "1. MAX BORROW AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(1): GOTO 3004
  20. 3003  INPUT A(1)
  21. 3004  PRINT "2. CHANGE IN AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(2): GOTO 3006
  22. 3005  INPUT A(2)
  23. 3006  PRINT "3. MAX INTEREST RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(3): GOTO 3008
  24. 3007  INPUT A(3)
  25. 3008  PRINT "4. CHANGE IN INT RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(4): GOTO 3010
  26. 3009  INPUT A(4)
  27. 3010  PRINT "5. LOAN TERM (MONTHS)"; TAB( 25);: IF FLAG  THEN  PRINT A(5): GOTO 3012
  28. 3011  INPUT A(5):FLAG = 1
  29. 3012  PRINT : INVERSE : PRINT " TYPE 'END' TO END ": NORMAL : VTAB 18: INPUT "ANY CHANGES? ";Y$
  30. 3013  IF  LEFT$(Y$,1) = "N"  THEN 6001
  31. 3014  IF Y$ = "END"  THEN  END 
  32. 3015  INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO ";: INPUT A(W): GOTO 3001
  33. 3016 :
  34. 4000  REM  PAYMENT CALCULATION
  35. 4001 I = J/1200
  36. 4002 PMT = (K *I)/(1 -(1 +I) ^( -A(5)))
  37. 4003  RETURN 
  38. 4004 :
  39. 5000  REM  PRINTUSING SUBROUTINE
  40. 5001 P$ =  STR$( INT((P +.005) *100))
  41. 5002  IF  LEN(P$) <3  THEN P$ =  LEFT$("000",(3 - LEN(P$))) +P$
  42. 5003 P$ =  LEFT$(P$,( LEN(P$) -2)) +"." + RIGHT$(P$,2)
  43. 5004 P$ =  RIGHT$("   " +P$,PL)
  44. 5005  RETURN 
  45. 5006 :
  46. 6000  REM  OUTPUT HEADING SECTION
  47. 6001  HOME : HTAB 13: INVERSE : PRINT " TERM: ";A(5);" MONTHS ": NORMAL 
  48. 6002  VTAB 2: PRINT "PRCNT";
  49. 6003  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2):P$ =  STR$( INT(K)):PL = 7: GOSUB 5004: PRINT P$;: NEXT K
  50. 6004  FOR DASH = 0 TO 39: PRINT "-";: NEXT DASH
  51. 6005 :
  52. 7000  REM  MAIN PROGRAM
  53. 7001 J = A(3)
  54. 7002 P = J:PL = 5: GOSUB 5001: PRINT P$;
  55. 7003  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2)
  56. 7004  GOSUB 4001
  57. 7005 P = PMT:PL = 7: GOSUB 5001: PRINT P$;
  58. 7006  NEXT K
  59. 7007 J = J -A(4)
  60. 7008  IF  PEEK(37) <22  AND J >0  THEN 7002
  61. 7009  VTAB 24: INVERSE : PRINT " ANY KEY FOR MENU ";: NORMAL 
  62. 7010  IF  PEEK( -16384) <128  THEN 7010
  63. 7011  GOTO 3001
  64. 7012 :
  65. 8000  REM  ERROR TRAP SUBROUTINE
  66. 8001  IF  PEEK(222) = 255  THEN  END 
  67. 8002  HOME : VTAB 5: INVERSE : PRINT "CHECK APPLESOFT MANUAL PG 136 FOR ERR": NORMAL 
  68. 8003  PRINT "ERROR IS NUMBER "; PEEK(222): PRINT "LOCATED IN LINE "; PEEK(218) + PEEK(219) *256: END